असल में मैं सर्वर पर एपीआई भेजने के लिए विशिष्ट समय के बाद पृष्ठभूमि थ्रेड चलाने के लिए 10 सेकंड के बाद चलाने के लिए चाहता हूं लेकिन पहले मैं जांच/परीक्षण के लिए कोड के नीचे कोशिश कर रहा हूं। अलार्म रिसीवर क्लास ऑन रिसीव में केवल एक बार चलता है बल्कि मैं हर 10 सेकंड के बाद दौड़ना चाहता हूं। मैं एंड्रॉइड के लिए नया हूं कृपया मुझे मार्गदर्शन करें कि मैं अपना लक्ष्य कैसे प्राप्त कर सकता हूं। धन्यवाद

यहाँ मुख्य गतिविधि कोड है:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Retrieve a PendingIntent that will perform a broadcast
        Intent alarmIntent = new Intent(this, AlarmReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
    }


    public void startAlarm(View view) {
        manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
        int interval = 10000; // 10 seconds

        manager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, pendingIntent);
        Toast.makeText(this, "Alarm Set", Toast.LENGTH_SHORT).show();
    }

    public void cancelAlarm(View view) {
        if (manager != null) {
            manager.cancel(pendingIntent);
            Toast.makeText(this, "Alarm Canceled", Toast.LENGTH_SHORT).show();
        }

    }
}

अलार्म रिसीवर क्लास यहां है:

public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context arg0, Intent arg1) {
        // For our recurring task, we'll just display a message
        Toast.makeText(arg0, "I'm running", Toast.LENGTH_SHORT).show();

    }

}

यहाँ मेनिफेस्ट फ़ाइल कोड है:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.majidali.alarammanager">

<uses-permission android:name="android.permission.INTERNET"/>

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <receiver android:name=".AlarmReceiver"></receiver>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
-1
user9706969 3 मई 2018, 12:07

1 उत्तर

सबसे बढ़िया उत्तर

मुझे लगता है कि सेकंड जैसे छोटे समय के अंतर के लिए, आप Handler का उपयोग कर सकते हैं।

इस कोड को आजमाएं,

Handler handler=new Handler();
Runnable mytask=new Runnable(){
    public void run(){
        //do something
         Toast.makeText(Youractivity.this, "Running", Toast.LENGTH_SHORT).show();
        handler.postDelayed(this, 10000);//10 sec
    }
};
mytask.run();

संपादित करें

कुछ तरकीब करो,

public class AlarmReceiver extends BroadcastReceiver
{


    @Override
    public void onReceive(Context context, Intent intent)
    {
        //yourtask
        setAlarm(context,10000);

    }
    public void setAlarm(Context context,long time)
    {
        AlarmManager am =( AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        Intent i = new Intent(context, AlarmReceiver.class);
        PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
        am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + time, pi);
    }

    public void cancelAlarm(Context context)
    {
        try {
            Intent intent = new Intent(context, AlarmReceiver.class);
            PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
            AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
            alarmManager.cancel(sender);
        }
        catch (Exception e)
        {

        }
    }
}

और आपकी गतिविधि में,

new AlarmReceiver().setAlarm(this,10000);
0
Jyoti JK 3 मई 2018, 13:28