小编Dav*_*ser的帖子

Android AsyncTask:在onPostExecute()中启动新的Activity

公共类HttpHelper扩展了AsyncTask> {ArrayList list = new ArrayList();

@Override
protected ArrayList<String> doInBackground(String... urls) {
    // TODO Auto-generated method stub

    String result="";
    for(String url:urls)
    {
        HttpClient client = new DefaultHttpClient();
        HttpGet request = new HttpGet(url);
        try
        {
            HttpResponse response = client.execute(request);
            InputStream in = response.getEntity().getContent();
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String line = null;
            StringBuffer sb = new StringBuffer();
            while((line = br.readLine())!=null)
            {
                sb.append(line+"\n");

            }
            in.close();
            result = sb.toString();
            String pageSource = new String(result);
            int startindex = pageSource.indexOf("pdf_doc/");
             String str="";
            String []temp; …
Run Code Online (Sandbox Code Playgroud)

android android-intent

4
推荐指数
1
解决办法
1万
查看次数

如何避免重复PendingIntents

嗨!

我在复制PendingIntents方面遇到了麻烦.我的应用程序具有从应用程序onCreate开始的服务,执行一些异步任务并自行停止.问题是,在每一个应用程序开始我从DB在AlarmManager一套新PendingIntents的(完全一样),但他们不取消以前,即使FLAG_CANCEL_CURRENT.我通过"adb shell dumpsys alarm"来确定这个,
这是一个异步任务的onPostExecute:protected void onPostExecute(Cursor c){

        while (c.moveToNext())
        {
            int _id = c.getInt(c.getColumnIndex(Maindb._ID));
            long remind_timestamp = c.getLong(c
                    .getColumnIndex(Maindb.REMIND_TIMESTAMP));
            String remind_name = c.getString(c.getColumnIndex(Maindb.NAME));
            String remind_description = c.getString(c
                    .getColumnIndex(Maindb.DESCRIPTION));

            Log.i("Service reminders : id = " + _id + "; REMIND_TIMESTAMP="
                    + remind_timestamp + "; NAME = " + remind_name
                    + "; DESCRIPTION=" + remind_description);

            Intent myIntent = new Intent(ReminderService.this,
                    AlarmReceiver.class);

            myIntent.putExtra(RemindDialog.REMIND_DIALOG_ID, _id);
            myIntent.putExtra(RemindDialog.REMIND_DIALOG_NAME, remind_name);
            myIntent.putExtra(RemindDialog.REMIND_DIALOG_DESCRIPTION,
                    remind_description);
            myIntent.putExtra(RemindDialog.REMIND_DIALOG_TIMESTAMP,
                    remind_timestamp);

            pendingIntent = PendingIntent.getService(ReminderService.this,
                    _id, myIntent, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_ONE_SHOT);

            AlarmManager alarmManager = …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-pendingintent

4
推荐指数
1
解决办法
1269
查看次数

延迟UI线程

我正在listview使用以下代码设置项目的颜色parent.getChildAt(itemPosition).setBackgroundColor(Color.parseColor("#FF9494"));

我写的这段代码OnItemClickListener.

设置颜色后,我希望将此颜色保持4秒钟,然后将项目的颜色恢复为之前的颜色(比如白色).

我尝试在UI线程上进行睡眠,但我知道这不是一个正确的方法.

任何人都可以建议我如何实现这一目标?

android android-ui android-activity

4
推荐指数
2
解决办法
2805
查看次数

android singleTask活动不作为root?

我一直在阅读有关发射模式的文档,有一点我没有理解.该文档说singleTask活动始终是堆栈的根:

相比之下,"singleTask"和"singleInstance"活动只能开始一项任务.它们始终位于活动堆栈的根部.此外,设备一次只能保存一个活动实例 - 只有一个这样的任务.

但是:如果你看一下图4中的部分文档,你会看到当Activity 2启动Activity Y(将该任务置于前台)时,Activity Y已经位于任务的顶部并且将位于当前的顶部任务,而不是根.

我在这个模拟应用程序中尝试了这个场景,当我创建singleTask活动时,它总是创建一个新任务.但是,如果唯一的实例已经存在,则它将完成高于此实例的所有活动,因此唯一的实例可以是根(也是任务中的唯一活动).

活动Y如何成为活动X上方任务的首位?

我还有其他原因吗?

PS:我也不太了解Task和后台堆栈之间的区别.

android launchmode android-task

4
推荐指数
1
解决办法
647
查看次数

Activity 和 JobIntentService 生命周期

我正在运行 aJobIntentService以在后台执行任务。使用的原因JobIntentService是这样用户可以在操作发生时最小化屏幕,即使 Android 操作系统破坏了 ActivityJobIntentService仍将继续运行,如果用户回来,他可以更新结果。

但是我有一个案例,假设用户自己关闭了应用程序,然后我也想停止应用程序JobIntentService

JobIntentService当用户自己关闭应用程序时,有什么方法可以通知。

任何帮助将不胜感激。

编辑:我尝试使用onTaskRemoved它是没有用的,因为我的测试设备不会调用它(我相信许多其他设备也不会调用它)。此外,当应用程序从最近的列表中删除时,该服务会自动停止,但在再次打开应用程序时再次重新启动,这是我不想要的。

android android-service android-lifecycle android-activity

4
推荐指数
1
解决办法
1923
查看次数

BroadcastReceiver每次启动服务时都会收到

我有一个动态注册BroadcastReceiverService.它得到AudioManager.RINGER_MODE_CHANGED_ACTIONIntentFilter.每次启动服务时,我都会在onReceive()方法中获取日志消息.之后它正常工作.每次启动服务时我都不希望它接收一次.你能告诉我我在这里失踪了吗?

    receiver=new BroadcastReceiver(){
        @Override
        public void onReceive(Context context, Intent intent) {
             Log.d("zil", "degisti");

        }
    };
    IntentFilter filter=new IntentFilter(
                    AudioManager.RINGER_MODE_CHANGED_ACTION);
    registerReceiver(receiver,filter);
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver android-service android-audiomanager

3
推荐指数
1
解决办法
796
查看次数

Android意图语法

在我试图找到如何在我的应用程序中启动新意图时,我遇到了几种方法来表达它.

此语法返回运行时错误,即ActivityNotFound异常

Intent in = new Intent("com.something.something"); 
Run Code Online (Sandbox Code Playgroud)

当然我的android清单包含intent过滤器中的一个动作:

<activity
        android:name=".SecondActivity"
        android:label="@string/title_activity_second" >
        <intent-filter>
            <action android:name="com.something.something" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity> 
Run Code Online (Sandbox Code Playgroud)

这种格式有效:

Intent in = new Intent(MainActivity.this, SecondActivity.class); 
Run Code Online (Sandbox Code Playgroud)

我也尝试过以下方法:

Intent in = new Intent(this, SomeActivity.class); 
Run Code Online (Sandbox Code Playgroud)

这是我正在阅读的一本书中推荐的.这将返回运行时错误,activitynotfound

这个让Eclipse无限地在setClass和setClassName之间来回抛出:

 Intent in = new Intent().setClass(this, SecondActivity.class);
Run Code Online (Sandbox Code Playgroud)

我在onclick方法中使用它:

ok.setOnClickListener(new View.OnClickListener()
    {

        @Override
        public void onClick(View v)
        {

            Intent in = new Intent(MainActivity.this, SecondActivity.class);
            startActivity(in);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

这些和为什么只有其中一个为我工作有什么区别?

问候/ M.

syntax android android-intent

3
推荐指数
1
解决办法
2万
查看次数

额外的未决意图会丢失

您好,我正在尝试创建一个挂起的意图,其中包含一个枚举,该枚举包含在其意图附加中,该枚举通过警报管理器启动广播接收器,但是当我尝试获取枚举说它为空时,我的代码在广播接收器上崩溃了?

下面是我的代码

 val calendar = Calendar.getInstance()
        calendar.timeInMillis = System.currentTimeMillis()

        val intent = Intent(context, ClearDataReceiver::class.java)
        intent.action = "clear data"
        intent.putExtra(ClearDataReceiver.DATA_TYPE_EXTRA, DataType.CUSTOMER_DETAILS )
        val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.timeInMillis, 60 * 1, pendingIntent)
Run Code Online (Sandbox Code Playgroud)

广播接收器

override fun onReceive(context: Context?, intent: Intent?) {
    super.onReceive(context, intent)

    var bundle = intent!!.extras

    val dataType = bundle.getSerializable(DATA_TYPE_EXTRA) as DataType
    when(dataType){
        DataType.BALANCE -> storage.clearCurrentBalance()
        DataType.CARD_NUMBER -> storage.clearardNumber()
        DataType.CUSTOMER_DETAILS -> storage.clearUserDetails()

    }
}
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver alarmmanager kotlin

3
推荐指数
1
解决办法
1182
查看次数

通过闹钟铃声停止设备振铃

我在不同的活动中响铃我的设备并在不同的活动中停止它。但问题是设备振铃在同一活动中开始和停止,但不会在不同的活动中停止。

代码是

     Ringtone ringtone;

     ringtone = RingtoneManager.getRingtone(mContext.getApplicationContext(),
                RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE));

     AudioManager audioManager = (AudioManager) mContext.getApplicationContext().getSystemService(AUDIO_SERVICE);
     int volume = audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM);

        audioManager.setStreamVolume(AudioManager.STREAM_ALARM, volume, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);

     ringtone.setStreamType(AudioManager.STREAM_ALARM);

     ringtone.stop(); //ringing is not stoping

Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以强行停止我的设备中的所有铃声..

java android alarmmanager

3
推荐指数
1
解决办法
193
查看次数

如何解决错误:不允许启动服务意图:应用程序在后台uid?

我有一个服务,它是在启动完成事件时启动的,但是应用程序崩溃并显示上面的错误消息。请帮助我如何在 Boot_Completed 的广播接收器事件上启动我的服务。

我的服务.kt

class MyService : Service() {

    override fun onCreate() {
        Log.d(TAG, "onCreate")
    }
    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        return START_STICKY
    }

    override fun onBind(intent: Intent?): IBinder? {
        return null
    }

    override fun onDestroy() {
        Log.d(TAG, "DO SOME STAFF")
    }
}
Run Code Online (Sandbox Code Playgroud)

MyBroadCaster.kt

class StartRelayServiceAtBootReceiver : BroadcastReceiver() {
     override fun onReceive(context: Context, intent: Intent) {

        if (Intent.ACTION_BOOT_COMPLETED == intent.action) {
            val serviceIntent = Intent(context, MyService::class.java)
            context.startService(serviceIntent)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver android-service kotlin

3
推荐指数
1
解决办法
1万
查看次数